Openminds Blog
Presentatie "Schaalbaarheid en Optimalisatie"

Je bouwde een website of webapplicatie volgens de regels van de kunst. Jij bent tevreden, je klant is tevreden, en de bezoekers zijn tevreden. Zo tevreden zelfs dat ze plots met honderdduizenden tegelijkertijd langskomen.
Hoe ga je om met dit success en hoe kan je je erop voorbereiden? Als adviseur, tester of hoster van hele drukke sites of applicaties, gaf ik je heel wat tips & tricks op de Netlab sessie van deze week dinsdag (14 oktober 2008).
Hieronder de slides van de presentatie.
Door Frank Louwers op 16 oktober 2008 - Permalink -
Rails Rumble 2008 - idee gezocht
Dit jaar is er terug een Rails Rumble wedstrijd. Openminds neemt eraan deel met een team, en de wil is er om toch minstens te mikken naar enig metaal of noemenswaardige plaats. Rails Rumble is een wedstrijd waarin in 48 uur een Rails-applicatie ontworpen en geprogrammeerd moet worden, door een team van 1 tot 4 man. De wedstrijd gaat door op 18 en 19 oktober.
Het team bestaat momenteel uit Jan (dé ruby god uit Merelbeke), Bernard (‘mag ik scaffolden’), en Jelle (‘wow, die designs zijn toch wel geil’). Er is dus nog plaats voor eentje meer, als iemand zich geroepen voelt. Logistiek wordt alles voorzien door Openminds, in de hoedanigheid van Frank als bartender.
We hebben echter nog input nodig van het grotere publiek, want een goed resultaat kunnen we enkel bereiken als we een goed idee uitwerken. Zelf hebben we al onze hersenen gepijnigd; en we weten welke richting we uit willen:
- De applicatie moet user-centric zijn – we leven in een web2.0 wereld
- De applicatie moet gericht zijn op een wereldpubliek – de applicatie zal beoordeeld worden door mensen van over de hele wereld
- Interactie moet centraal staan
- Het moet doenbaar zijn in 48 uur – we gaan er effort in steken, maar niet alles is mogelijk in 48 uur… Hou er rekening mee
- Het doelpubliek is non-geek tot medium-geek – ze hebben wel computerkennis en hebben al eens een browser gebruikt.
Als jullie een goed idee hebben, dat je denkt dat uitgewerkt kan worden in 48 uur door ons, laat maar horen! Voor de bedenker van het goede idee staat er een beloning klaar.
Door Bernard Grymonpon op 3 oktober 2008 - Permalink - [2]
Bescherm u tegen Ruby on Rails vulnerability
Zaterdag gaf het ruby-security team een waarschuwing uit voor een DoS Vulnerability in REXML. De REXML bibliotheek wordt door Ruby on Rails gebruikt om inkomende requests te parsen. Iemand met slechte bedoelingen kan dus misbruik maken van deze bug, en uw applicatie overbelasten.
De REXML bibliotheek is deel van het Ruby-pakket, welke nog geen update voor dit probleem heeft uitgebracht. We zijn hiervan in blijde afwachting, maar ondertussen is er een tijdelijke patch uitgekomen in de vorm van een gem.
Deze gem staat reeds op de Openminds servers geïnstalleerd. U moet deze enkel nog inladen in uw applicatie.
Dit kan eenvoudig worden gedaan door in uw environment.rb het lijntje require ‘rexml-expansion-fix’ te plaatsen, en uw lighttpd te herstarten.
Moest u hiermee problemen ondervinden kan u altijd onze support contacteren, we helpen u hier graag mee verder.
Door Jan De Poorter op 25 augustus 2008 - Permalink -
Jan won de tweede prijs in de RailsCasts wedstrijd
Collega Jan won de tweede prijs in de RailsCasts 100th Episode Contest. De wedstrijd was vrij eenvoudig. Je moest het antwoord geven op de vraag “Wat zijn jouw 5 beste Rails tips”?
Jan’s Tips waren goed voor een tweede prijs. Hij won ondermeer 100 dollar aan boeken, een abonnement op een bug tracking en een Project Management dienst.
Proficiat Jan! Blij dat je in mijn team zit :)
PS: Wil je ook deel uitmaken van ons winnende team? Mail jobs @ openminds.be met je CV en motivatie. Momenteel zoeken we nog een Rails-ontwikkelaar.
Door Frank Louwers op 13 mei 2008 - Permalink - [1]
Groene Hosting: geen boompjes graag
Ongeveer een jaar terug startten we met ons vooruitstrevend Groene Hosting project. Het laat onze klanten toe om geheel vrijwillig de CO2 uitstoot van hun site te compenseren. Een jaar na de start van ons project komt er stilaan “mainstream aandacht” voor de CO2 uitstoot veroorzaakt door servers. Zo organiseerde Cleanbits een seminarie “Hoe word je een Energiezuinig en Duurzaam Hostingbedrijf?”
Ikzelf was niet aanwezig, maar ik lees op ISPam.nl dat wij vernoemd werden in de introductie. Meer bepaald werd ons persbericht van september aangehaald, waarin we trots aankondigen dat 3 op 4 van onze nieuwe klanten voor Groene Hosting kiest. Dank je wel, Cleanbits, voor de aandacht en de publiciteit, en proficiat met jullie initiatief. Toch verschilt onze aanpak sterk.
Als we bij Openminds een oplossing moeten kiezen, overwegen we heel wat factoren, en gaan we op zoek naar de beste kwaliteit, die betaalbaar blijft. Ook voor onze Groene Hosting zochten we naar kwaliteit.
Al snel bleek dat heel wat projecten “bebossings” projecten zijn. Bomen nemen CO2 uit de atmosfeer op, en slaan deze op. Een eerste probleem is wat er daarna gebeurt met die CO2. Als de boom sterft en rot, komt het grootste stuk van de CO2 terug vrij. Een ander stuk van de CO2 gaat gewoon de grond in. Het is alsof je het afvalprobleem van een stad zou proberen oplossen door het te dumpen in een grote put en hopen dat je die put nooit meer moet opendoen. Een ander probleem met bebossingsprojecten is dat je het bestaande eco-systeem grondig verstoort. Zo worden vaak hele hectares met dezelfde bomen aangelegd, vaak zelfs bomen die niet thuis horen in dat ecosysteem. Bovendien vinden wij dat er bepaalde ethische en maatschappelijke criteria moeten gelden voor onze compensatieprojecten. Zo is er heel wat kritiek op twee grote projecten van de Nederlandse Stichting Face. De projecten leidden tot een vernietiging van het bestaande ecosysteem en werd de plaatselijke bevolking niet correct behandeld en ingezet als “slaven” op de plantages.
Zowel wetenschappers als verschillende milieuorganisaties (van het WWF tot de Bond Beter Leefmilieu) hebben ons aangeraden om projecten te kiezen die voldoen aan de CDM Gold Standard. Internationale NGOs zien toe op de milieu-aspecten van de projecten, maar gaan ook na wat de impact voor de plaatselijke bevolking is, of de plaatselijke bevolking voldoende betrokken is bij het hele project. Daarnaast komen enkel projecten in aanmerking die op een of andere manier de uitstoot van CO2 verhinderen. Zo komt een windmolenproject, of een project om een bestaande olie-centrale om te zetten in een centrale op biomassa wel in aanmerking, maar een bebossingsproject nooit. De eisen die de Gold Standard vooropstelt, gaan verder dan de eisen die vervat zijn in het Kyoto protocol, iets wat van vele bebossingsprojecten niet gezegd kan worden.
Let op, er is niks mis met het planten van bomen, in tegendeel. Wij zijn absoluut voorstander van alles wat de massale ontbossing in sommige gebieden van deze planeet tegen te gaan, maar vinden dat er veel betere projecten zijn als je echt de CO2 uitstoot wil gaan compenseren. Daarom kiezen niet enkel wij, maar ook de KLM of Fortis voor CDM Gold Standard projecten om CO2 uitstoot te compenseren. Uiteraard juichen we toe dat Cleanbits zich inzet om de klimaatsveranderingen tegen te gaan. Bovendien slagen ze erin voldoende media-aandacht te genereren en mensen te overtuigen. We wensen ze dan ook veel succes toe, maar vinden het jammer dat zij niet voor dezelfde standaarden kozen als Openminds.
Door Frank Louwers op 21 april 2008 - Permalink -
Mollom Ruby Gem
Mollom, an Openminds client, recently released a new web service created by Drupal’s founder Dries Buytaert and Benjamin Schrauwen. In it’s own words, Mollom is a web service that helps you identify content quality and, more importantly, helps you stop comment and contact form spam. Other than that, it also provides a way to let users enter a CAPTCHA if their content has been marked as spam. That way a real person will always be able to enter content.
The mollom site currently provides a module for Drupal, and a Java Class, but no Ruby version yet, and there we come in. We created a gem to interface with Mollom. It provides the basic API functionality, and follows the API-docs as much as possible.
To use mollom, you need an API-key, which you can get at http://www.mollom.com.
Installing the gem is as easy as:
gem install mollom
Or you can also get the latest development version from GitHub:
git clone git://github.com/DefV/ruby-mollom.git
You can use the code like in the following example:
The complete documentation for this library can be found at http://mollom.rubyforge.org/ .
And for all the Ruby on Rails users: a Rails plugin is on its way!
Door Jan De Poorter op 3 april 2008 - Permalink -
Stroomproblemen LCL Diegem 31 maart
Deze namiddag werd het LCL datacenter in Diegem getroffen door een algemene stroomstoring. LCL Diegem is één van de grootste datacenters van het land, en is ook het datacenter waar Openminds een ruimte huurt, en van waaruit het merendeel van onze diensten draaien.
In onze ruimte hebben we een twee compleet gescheiden stroomfeeds, en deze zijn allebei voorzien van noodbatterijen en een generator via het LCL datacentrum. Alle stroomcomponenten worden elke maand volledig getest op volle belasting. Technisch is alles dus voorzien om een continue stroom te leveren. Dit is tot vandaag altijd gelukt, nog nooit was de stroom weggevallen in het datacentrum sinds de startdag.
Deze middag heeft zich rond kwart na vier een eerste stroomstoring voorgedaan, waarbij een groot deel van onze apparatuur offline ging. Na een korte tijd kwam de stroom even terug, maar twintig minuten later was alles terug offline. Pas enkele uren later werd het probleem volledig verholpen.
We doen er alles aan om onze dienstverlening zo stabiel en redundant mogelijk te maken. Zo is ons netwerk volledig redundant uitgevoerd, hebben de meeste servers twee netwerkverbindingen, gebruiken we overal RAID-setups en we hebben we dagelijkse backups van alle servers. Helaas is de stroomvoorziening volledig buiten onze controle; hier moeten we vertrouwen op onze leverancier, en kunnen we zelf niets extra voorzien om dit beter te maken. Aangezien LCL een van de grootste datacenters van het land is, werden heel wat van ons collega’s concurrenten ook getroffen door deze panne.
Over de precieze oorzaak van de storing alsook de ingrepen die zullen plaatsvinden om dit in de toekomst te vermijden, wachten we nog op een officiële communicatie van LCL, de uitbater van het datacenter. We berichten jullie hierover van zodra we meer informatie hebben.
We excuseren ons dan ook bij onze klanten en benadrukken dat wij in overleg met de uitbater van het datacenter naar oplossingen zullen zoeken om ervoor te zorgen dat dit in de toekomst niet meer kan voorvallen. Geen enkele mail ging verloren ten gevolge van deze outage, aangezien onze backup mail infrastructuur in Nederland alle e-mail berichten opving. Hoewel een aantal harddisks sneuvelden, is er geen data verloren gegaan, dankzij de RAID-setup in al onze machines.
Wij excuseren ons nogmaals voor het ongemak, en danken onze klanten voor hun begrip, geduld en vertrouwen in Openminds. Wanneer je vragen hebt, aarzel niet om ons te contacteren: dringende problemen kunnen telefonisch, minder dringende liefst via email.
Door Frank Louwers op 1 april 2008 - Permalink -
Benchmarking Ebb, Thin, Mongrel and FastCGI for Ruby on Rails hosting
Since day one of our Ruby on Rails hosting packages, we provide our customers with a Lighttpd webserver, which starts two Ruby processes. The lighttpd handles all static requests, and all other requests are handed over to the Ruby processes using the FastCGI protocol. Two years ago, we were convinced that this was the best and most stable way to offer shared hosting for Rails projects.
The last few weeks, there was a lot of buzz in the Rails-community about new ways to serve Rails projects. We first saw the improved Mongrel, later came Thin and recently Ebb, which claimed to be 10% faster than Thin and 30% faster than Mongrel.
There are three kinds of lies: lies, damned lies, and statistics. We wondered how much faster those new methods are, and how they compare to the classic Mongrel setup, or our Lighttpd/FastCGI combination.
In all testcases, we ran one front-end webserver and two back-end Rails processes.
Static content
We are convinced: static content should be handled by webservers that are optimized to serve static content. This has been one of the major advantages of our current setup: the lighttpd server will serve all static content itself, without passing it to the Rails backends. Quite a few Rails projects cache output to .html files, so these are blazing fast and will even work when the Rails environment is down or restarting. Let’s look a graph that shows the performance of Lighttpd, Ebb, Thin and nginx when used as a static file server. The tests were done using the Apache “ab” tool, against the homepage of a Mephisto blog, which gets cached to a single static .html file.

We see a clear pattern: If you have static content, serve it through a webserver, and not through your Ruby environment! The graph shows static content being served at +10000 requests per second serving 50 concurrent visitors! (There is also a lesson for application builders in this: Think about “caching” your output to plain .html pages!)
Mephisto search results
To test the “real” Rails performance of Ebb, Thin and Mongrel and to compare them to our setup, we tested the search results page of a Mephisto blog. These result-pages can’t be cached, and they require computing and rendering in Mephisto. This way, we move the performance testing away from the connection handling and serving of content towards the Rails/Ruby environment.

The results came a bit as a suprise! It seems that Mongrel is a lot faster than Ebb and Thin! All those new webservers claim they are a lot faster than Mongrel, while in fact, they are slower. We have a theory about the causes of this “anormality” and will give our opinion later on.
The second Thing we noticed was that our two-year-old setup of a Lighttpd 1.4 and Ruby fastcgi processes, is still amongst the fastest. In fact, we don’t see why we would switch to another config based on these results.
Radiant CMS results
Because of the odd result that Mongrel was, in fact, among the fastest environments in the previous test, we wanted to test “fast” Rails pages. The search result in Mephisto is slow (as it has to do a full text search over all the blog articles and does that in a non-optimized way). The Radiant CMS is very lean and fast, but doesn’t use HTML caching for its pages. An excellent candidate for our benchmarks.

The lighttpd + fastcgi setup blows the competition away! It’s faster at every level of concurrency. Another noticable point is the fact that Mongrel is amongst the slowest of the pack and Thin and Ebb are (as predicted by their authors) significantly faster than Mongrel.
Why is Mongrel sometimes amongst the fastest and sometimes amongst the slowest? We Think it’s because Mongrel is quite fast at processing Ruby code (as it is written in Ruby itself), but is quite slow at handling new connections, at processing the HTTP headers and signaling. The new and improved Ruby servers such as Thin and Ebb, are very fast and efficient when handling new requests and their connections, but are probably a bit slower in handling the actual Ruby code.
For pages that spend quite some time doing “Ruby” work, such as the Mephisto blog search results, this means Mongrel is faster, for small and speedy requests such as the Radiant-CMS homepage, Ebb and Thin are faster as the processing time is less important, and the time needed to handle the connections can make the difference.
Conclusions
Our main conclusion is that the choices we made two years ago about the default setup for our Rails customers, is still an excellent choice. It’s easy for the customer to setup or tune (the config files are very small), it’s very fast at serving static content, it’s very fast for non-intensive pages, and it’s doing well serving intensive pages.
For customers that have a (virtual) dedicated environment, there are two conclusions. The first is that you do want to handle all static requests using either lighttpd or nginx; you don’t want Mongrel, Ebb or Thin to serve static content. The second is that you need to test your application with a few different configurations and decide the best one for your needs.
And a short note: we performed these benchmarks to the best of our knowledge, but they still are simple benchmarks.
Door Frank Louwers op 26 maart 2008 - Permalink - [5]
Hosted Zimbra aanbod online
Sinds vandaag staat ons hosted Zimbra aanbod op onze site. Via het Zimbra-platform kunnen we een sterk alternatief aanbieden voor email en samenwerking voor kleine tot middelgrote teams.
Dit platform centraliseert eenvoudig uw kalenders, email, contactpersonen en email-berichten, en maakt deze eenvoudig bereikbaar, via de krachtige web-interface, of via synchronisatiekanalen voor Outlook, Apple iCal, of op PDA’s, smartphones, en zelfs Blackberry.
Wanneer je meer informatie wenst, verwijzen we graag door naar onze Zimbra pagina of kan je onze korte spec-sheet downloaden. Denk eraan om je gratis testaccount aan te vragen via het formulier onderaan de pagina!
Door Bernard Grymonpon op 19 maart 2008 - Permalink -
Linux Kernel 2.6 Root Exploit
Gisteren maakte collega Bram ons attent op een Debian Bugreport van het linux-2.6 kernel-package. Gezien deze bug er relatief kritisch uitzag testten we de Proof-Of-Concept (of toch een aangepaste versie) meteen uit op onze virtuele test-systemen. Eén soort systemen bleek kwetsbaar voor deze exploit (diegene met de 2.6.18-domu kernel).
Elk van onze systemen draait een custom kernel, zodat deze zo vlot mogelijk en aan onze wensen aangepast draaien. Dit zorgt er ook voor dat we kleine stukken code kunnen patchen om snel exploits tegen te gaan. Zo ook deze, de oplossing bleek relatief simpel te zijn:
Na deze patch toe te voegen aan de kernels, en een grondige test-run, waren we deze ochtend klaar om de kwetsbare servers een voor een te herstarten. Na goede communicatie met de getroffen klanten, werden alle machines herstart met de nieuwe kernel zonder problemen.
Wij raden iedereen met eigen servers aan dit zeker ook na te kijken! Debian heeft momenteel nog geen patch in zijn security updates zitten, maar dit komt er zeker aan.
UPDATE: Ondertussen is er een debian security update
Door Jan De Poorter op 11 februari 2008 - Permalink -
Previous